# 默认编译器和工具
CC = gcc
LD = gcc
AR = ar
RM = rm -f

# 支持交叉编译，CROSS_COMPILE 可通过命令行指定，例如：make CROSS_COMPILE=arm-none-eabi-
CROSS_COMPILE ?=
CC := $(CROSS_COMPILE)$(CC)
LD := $(CROSS_COMPILE)$(LD)
AR := $(CROSS_COMPILE)$(AR)

# 编译选项
CFLAGS = -Wall -g -O2 -I.
LDFLAGS = -Wall

# 目标可执行文件
TARGET = count_words

# 源文件和目标文件
SRCS = klist.h main.c
OBJS = $(SRCS:.c=.o)

# 默认目标
.PHONY: all
all: $(TARGET)

# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

# 编译源文件生成目标文件
%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

# 清理目标
.PHONY: clean
clean:
	$(RM) $(TARGET) $(OBJS)

# 伪目标依赖
.PHONY: clean all